package service

import (
	"jnjword/models"
	"strconv"

	"github.com/gin-gonic/gin"
)

// GetUserList
// @Summary      用户列表
// @Tags         用户模块
// @Success      200  {string}  json{"code","message"}
// @Router       /user/getUserList [get]
func GetUserList(c *gin.Context) {
	data := make([]*models.UserBasic, 10)
	data = models.GetUserList()
	c.JSON(200, gin.H{
		"code": 0, //code为0表示成功 -1表示失败
		"msg":  "success",
		"data": data,
	})
}

// CreateUser
// @Summary      创建用户
// @Tags         用户模块
// @Param        name     query     string  true  "用户名"
// @Param        password query     string  true  "密码"
// @Success      200  {string}  json{"code","message"}
// @Router       /user/createUser [post]
func CreateUser(c *gin.Context) {
	var user models.UserBasic
	user.Name = c.Query("name")
	user.Password = c.Query("password")
	// 如果models.CreateUser(user) 是nil返回空
	if models.CreateUser(user) == nil {
		c.JSON(200, gin.H{
			"code": 0,
			"msg":  "failed",
			"data": "用户创建失败",
		})
	} else {
		c.JSON(200, gin.H{
			"code": 0,
			"msg":  "success",
			"data": "用户创建成功",
		})
	}
}

// CreateUser
// @Summary      删除用户
// @Tags         用户模块
// @Param        name     query     string  true  "用户名"
// @Success      200  {string}  json{"code","message"}
// @Router       /user/deleteUser [post]
func DeleteUser(c *gin.Context) {
	models.DeleteUser(c.Query("name"))
	c.JSON(200, gin.H{
		"code": 0,
		"msg":  "success",
		"data": nil,
	})
}

// findUser
// @Summary      用户名查找用户
// @Tags         用户模块
// @Param        name     query     string  true  "用户名"
// @Success      200  {string}  json{"code","message"}
// @Router       /user/findUser [get]
func FindUserByName(c *gin.Context) {
	data := models.FindUserByName(c.Query("name"))

	if data.Name == "" {
		c.JSON(200, gin.H{
			"code": 0,
			"msg":  "failed",
			"data": "用户不存在",
		})
	} else {
		c.JSON(200, gin.H{
			"code": 0,
			"msg":  "success",
			"data": data,
		})
	}

}

// 根据用户名密码查找用户
// findUserPwd
// @Summary      登录
// @Tags         用户模块
// @Param        name     query     string  true  "用户名"
// @Param        password query     string  true  "密码"
// @Success      200  {string}  json{"code","message"}
// @Router       /user/Login [post]
func Login(c *gin.Context) {
	data := models.FindUserByNameAndPassword(c.Query("name"), c.Query("password"))

	if data.Name == "" {
		c.JSON(200, gin.H{
			"code": -1,
			"msg":  "failed",
			"data": "用户不存在",
		})
	} else {
		c.JSON(200, gin.H{
			"code": 0,
			"msg":  "success",
			"data": "登录成功",
		})
	}
}

// UpdateUser
// @Summary      修改用户
// @Tags         用户模块
// @Param        id     query     uint  true  "用户id"
// @Param        name     query     string  true  "用户名"
// @Param        password query     string  true  "密码"
// @Success      200  {string}  json{"code","message"}
// @Router       /user/updateUser [post]
func UpdateUser(c *gin.Context) {
	var user models.UserBasic
	// 获取用户ID
	userIDStr := c.Query("id")
	userID, err := strconv.Atoi(userIDStr)
	if err != nil {
		c.JSON(200, gin.H{
			"code": -1,
			"msg":  "用户ID格式错误",
			"data": nil,
		})
		return
	}
	user.Name = c.Query("name")
	user.Password = c.Query("password")
	models.UpdateUser(uint(userID), user.Name, user.Password)
	c.JSON(200, gin.H{
		"code": 0,
		"msg":  "success",
		"data": "用户修改成功",
	})
}
